package com.yc.favorite.biz;

import com.yc.favorite.mapper.FavoriteMapper;
import com.yc.favorite.mapper.TagFavoriteMapper;
import com.yc.favorite.mapper.TagMapper;
import com.yc.favorite.po.Favorite;
import com.yc.favorite.po.Tag;
import com.yc.favorite.po.TagFavorite;
import com.yc.favorite.util.MyBatisHelper;

public class FavoriteBiz {

    public void addFavorite(Favorite f) {
        MyBatisHelper.execute(s -> {
            FavoriteMapper fm = s.getMapper(FavoriteMapper.class);
            TagMapper tm = s.getMapper(TagMapper.class);
            TagFavoriteMapper tfm = s.getMapper(TagFavoriteMapper.class);
            // 添加链接
            fm.insert(f);
            // 分割分类
            String[] tags = f.getFtags().split("[,;，；\\s]+");
            for (String t : tags){
                // 更新分类: 1. 如果已经存在 , 数量+1, 2. 不在, 新增
                if( tm.addCountByTname(t) == 0){  //  2. 不在, 新增
                    Tag tag = new Tag();
                    tag.setTname(t);
                    tm.insert(tag);
                    // 添加中间表记录
                    TagFavorite tf = new TagFavorite();
                    tf.setTid(tag.getTid());
                    tf.setFid(f.getFid());
                    tfm.insert(tf);
                } else {
                    // 如果是修改 tag 的数据量  tid 要查询,
                    // 或添加 根据tname 修改数量的 mybatis 接口方法
                    tfm.insert1(t, f.getFid());
                }
            }
            return null;
        });



    }
}
